home *** CD-ROM | disk | FTP | other *** search
- Hello again...
-
- I'm back with the second tut for the CrackMe by <<Nullz>>.
- This time it is the secong challenge we are looking at.
-
- Taget : CrackMe Version 1.1 (Registration Type: 2)
- Get it at: http://members.xoom.com/nullz/
- Tools : Softice 3.0 or higher
-
- As last time i wont describe the serial calculation routines,
- but only some hints to find the right serial. This is enough,
- when you want to catch serials for normal Shareware programs
- as well, but when you want to make keygens, you'll have to
- study the calculation routines.
-
- Now, lets go on with the cracking part...:)
-
- -Start by running the CrackMe.
- Remember the first part...? We used GetDlgItemTextA to breake
- on. So why not try it again ?
-
- -Goto SoftIce by pushing Ctrl+d, and put a breakpoint on
- GetDlgItemTextA (BPX GetDlgItemTextA)
-
- -Write you name/Serial, I used EinZtein/7894561230.
-
- -Press OK, and softice breaks...great! we are lucky :)
-
- -Press F11 to get out of the CALL.
-
- -Now check the EAX register, hmmm, mine showed EAX = 00000008.
- (EinZtein = 8 chars), that must be the Name, and we are
- interested in the Serial only, so press F5 to goto the next
- GetDlgItemTextA Call.
-
- -Ahh, now it is, EAX = 0000000A (7894561230 = 10 Chars(0Ah))
-
- -We are in the right place now, so try to step a little by using F10.
-
- -After a little stepping, you'll see a code looking some like this:
-
- :00401B25 0FBE4C0414 movsx ecx, byte ptr [esp+eax+14] <--- Moves a Char from
- :00401B2A 03CF add ecx, edi your serial in to ECX
- :00401B2C 0FAFC8 imul ecx, eax <--- Calculates the serial
- :00401B2F 40 inc eax
- :00401B30 8BF9 mov edi, ecx
- :00401B32 3BC6 cmp eax, esi <--- is all the chars calculated ?
- :00401B34 76EF jbe 00401B25 <--- No ? Start over
-
- -This code is really not interesting if you're only fishing for the serial.
-
- -So step by it until you'll come to a code looking like this:
-
- :00401B3C 0FBE6C0C14 movsx ebp, byte ptr [esp+ecx+14] <--- Moves a Char from
- :00401B41 8BC7 mov eax, edi your serial in to ECX
- :00401B43 33D2 xor edx, edx
- :00401B45 F7F5 div ebp
- :00401B47 33D2 xor edx, edx
- :00401B49 BD0A000000 mov ebp, 0000000A
- :00401B4E F7F5 div ebp
- :00401B50 80C230 add dl, 30
- :00401B53 88540C48 mov byte ptr [esp+ecx+48], dl
- :00401B57 41 inc ecx
- :00401B58 3BCE cmp ecx, esi <--- All chars calculated ?
- :00401B5A 72E0 jb 00401B3C <--- no ? Start over
-
- -This piece of code is actually just an uninteresting as the first one, if you're only
- fishing for the serial as we do now.
-
- -Right after the shown code, this code will show up:
-
- :00401B5C 8D542448 lea edx, dword ptr [esp+48] <--- YOUR serial
- :00401B60 8D44247C lea eax, dword ptr [esp+7C] <--- CORRECT serial
- :00401B64 52 push edx
- :00401B65 50 push eax
-
- * Reference To: KERNEL32.lstrcmpA, Ord:0295h
- |
- :00401B66 FF1508404000 Call dword ptr [00404008] <--- Compares serials
- :00401B6C 85C0 test eax, eax <--- Correct serial ?
- :00401B6E 7550 jne 00401BC0 <--- If not.. Beat it
-
- -ahh, dont that look familiar to you ?
-
- -If you read the first tut, it should.
-
- -We have here a compare routine, that should be easy to understand.
- lstrcmpA = String Compare.
-
- -So all you have to do, is: right after stepping pass 00401B64, type "D edx"
- and "D eax", and you'll see both YOUR serial an the CORRECT serial.
-
- -Write down the correct serial, Type "BD *", to disable the vreakpoint you might have set,
- and press "Ctrl+D" to exit SoftIce.
-
- -Now type your name and the correct serial in the textboxes, and BOOM, you passed.
- Congratulations!
-
- That's all for now, i hope you'd learned something...:)
-
- Feel free to catch me on #efNet or mail me on einzteinius@hotmail.com, if you think anything
- should be added, or something is wrong...
-
- ...Enjoy!
-
- /EinZtein
-
-
-
-
-
-
-
-
-
-